package com.example.test.utils;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.PrintWriter;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.List;

public class Utils {

    /**
     * 日志对象
     */
    private static final Logger LOGGER = LoggerFactory.getLogger(Utils.class);

    /**
     * 获取目录下文件名列表
     * @param path 文件目录
     * @return 文件名列表
     */
    public String [] getFileNames(String path)
    {
        File file = new File(this.getClass().getResource(path).getPath());
        return file.list();
    }

    /**
     * 获取文件字节数据
     * @param filePath 文件路径，示例:/img/vehicle/190.png
     * @return 文件字节数据
     */
    public byte[] getFile(String filePath) {
        File f = null;
        try {
            f = new File(filePath);
        } catch (Exception e) {
            e.printStackTrace();
        }
        Path path = Paths.get(f.getAbsolutePath());
        byte[] data = null;
        try {
            data = Files.readAllBytes(path);
        } catch (IOException e) {
            e.printStackTrace();
        }

        return data;
    }

    /**
     * 创建文件
     * @param fileName 文件路径
     * @return true or false
     */
    public boolean createFile(String fileName){
        boolean bool = false;
        File file = new File(fileName);
        try {
            if (file.exists()) {
                file.delete();
                bool = file.createNewFile();
            } else {
                bool = file.createNewFile();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }

        return bool;
    }

    /**
     * 写入数据到新文件
     * @param filepath 文件路径，包括文件名
     * @param data 写入数据
     */
    public void writeFileContent(String filepath, List<String> data){
        try (FileOutputStream fos = new FileOutputStream(new File(filepath));
             PrintWriter pw = new PrintWriter(fos)) {
            for (String newStr : data) {
                pw.write(newStr.toCharArray());
                pw.flush();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

